home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK1.toast / Development Kits (Disc 1) / AIAT 1.0.1 / Headers / Accessor / InvertedAccessor.h < prev    next >
Encoding:
Text File  |  1997-09-11  |  3.5 KB  |  114 lines  |  [TEXT/CWIE]

  1. // InvertedAccessor.h
  2. //    Copyright:    © 1994 - 1996-1997 by Apple Computer, Inc., all rights reserved.
  3. // Implements ExactSearch and RankedSearch over InvertedIndices
  4.  
  5. #pragma once
  6. #ifndef InvertedAccessor_h
  7. #define InvertedAccessor_h
  8.  
  9. #include "RankedAccessor.h"
  10.  
  11. #pragma IA_BEGIN_EXPORTS
  12.  
  13. // classes needed for private method declarations
  14. class InvertedIndex;
  15. class RankedQuery;
  16. class Similarity;
  17. class InvertedHitQueue;
  18. class Progress;
  19. class IAQuery;
  20. class IABooleanQuery;
  21.  
  22.  
  23. const uint32 InvertedAccessorType = 'Inv0';
  24.  
  25. class InvertedAccessor : public virtual RankedAccessor {
  26. public:
  27.         InvertedAccessor(InvertedIndex** indices, uint32 indexCount, uint32 t = InvertedAccessorType);
  28.         ~InvertedAccessor();
  29.  
  30.     uint32        RankedSearch(byte*                     textQuery,     uint32     textQueryLen,
  31.                              RankedQueryDoc*         docQuery,     uint32     docQueryLen,
  32.                              RankedHit**            results,    uint32    resultLen,
  33.                              uint32                    matchingTermsLen,
  34.                              RankedProgressFn*        progressFn,
  35.                              clock_t                progressFreq,
  36.                              void*                    appData);
  37.                              
  38.     uint32        RankedSearch(IADocText*             textQuery,
  39.                              RankedQueryDoc*         docQuery,     uint32     docQueryLen,
  40.                              RankedHit**            results,    uint32    resultLen,
  41.                              uint32                    matchingTermsLen,
  42.                              RankedProgressFn*        progressFn,
  43.                              clock_t                progressFreq,
  44.                              void*                    appData);
  45.  
  46.     uint32        RankedSearchBoolean(byte*            text,        uint32     textLen,
  47.                                  RankedHit**            results,    uint32    resultLen,
  48.                                  RankedProgressFn*    progressFn,
  49.                                  clock_t                progressFreq,
  50.                                 void*                appData);
  51.  
  52.     void         SetBooleanAndOperator(UInt16 andOp = '&');
  53.     void         SetBooleanOrOperator(UInt16 orOp = '|');
  54.     void         SetBooleanNotOperator(UInt16 notOp = '!');
  55.     void         SetBooleanLeftFence(UInt16 leftfence = '\(');  
  56.     void         SetBooleanRightFence(UInt16 rightfence = '\)'); 
  57.  
  58. protected:
  59.     void        Initializing();
  60.  
  61.     IABlockSize    InitsSize();
  62.     void        StoringInits(IAOutputBlock* output);
  63.     void        RestoringInits(IAInputBlock* input);
  64.  
  65.     TermFreq    TrimmedQuerySize(TermFreq querySize);
  66.     uint32        RankedSearchIndices(IAQuery* query, Progress* prog,
  67.                                     RankedHit** results, uint32 resultLen, uint32 nTerms);
  68.  
  69.     void         TrimRankedQuery(IAQuery* query);
  70.     bool        RankedSearchIndex(uint32 i, IAQuery* query,
  71.                                   Progress* prog, InvertedHitQueue* hitQueue,
  72.                                   uint32 resultLen, uint32 nTerms);
  73.  
  74.     byte**        GetDocNorms() const;
  75.         
  76.     uint32        RankSearchBooleanIndecies ( Progress* prog, RankedHit** results, uint32 resultLen);
  77.     void         RankedSearchBooleanIndex(uint32 i, Progress* prog, InvertedHitQueue* hitQueue, uint32 resultLen);
  78.     void        PutAway(DocID docID, uint32 i, float sum, uint32 headcnt, InvertedHitQueue* hitQueue, uint32 resultLen, Progress* prog);
  79.     
  80.     uint32        GetInvertedRankedQueryMinTerms () const {return InvertedRankedQueryMinTerms;}
  81.     uint32        GetInvertedRankedQueryMaxTerms () const {return InvertedRankedQueryMaxTerms;}
  82.     
  83.     void        SetInvertedRankedQueryMinTerms (uint32 minValue = 10) {InvertedRankedQueryMinTerms = minValue;}
  84.     void        SetInvertedRankedQueryMaxTerms (uint32 maxValue = 50) {InvertedRankedQueryMaxTerms = maxValue;}
  85.  
  86.  
  87. private:
  88.  
  89.     friend class IABooleanQueryTermNode;
  90.     byte**        docNorms;
  91.     IAIndex**    UpcastIndices(InvertedIndex** is, uint32 c);
  92.                 InvertedAccessor(InvertedAccessor&);
  93.     float        fAveNormalization;
  94.     uint32        fTotalDocs;
  95.     uint32        fTotalNorm;
  96.     
  97.     /// query trimming speeds large queries by discarding low-scoring terms
  98.     uint32 InvertedRankedQueryMinTerms;
  99.     uint32 InvertedRankedQueryMaxTerms;
  100.  
  101.     
  102.     IABooleanQuery*    fBoolquery;
  103. };
  104.  
  105. inline byte**    InvertedAccessor::GetDocNorms() const
  106. {
  107.     return docNorms;
  108. }
  109.  
  110. #pragma IA_END_EXPORTS
  111.  
  112. #pragma import reset
  113. #endif
  114.